<?php
//二级树型结构类，把普通数据分成树型结构
class Tree {
    private static $instance;
    private function __construct() {}
    private function __clone() {}

    public static function getInstance() {
        if(!self::$instance instanceof self) {
            return new self();
        }
        return self::$instance;
    }
    public function getTree($data,$id) {
        //主nav则放进$mainNav中，子类nav则放进childNav中
        foreach($data as $key=>$value) {
            $value->sid == 0 ? $mainNav[] = $value : $childNav[] = $value;
            if($value->id == $id) {;
                $resultNav[0] = $value;        //根据网址参数把当前的导航对象存进结果数组中
                //假如当前导航属于父类导航，则把当前的导航id和name组成一个数组，以便于放到模板组成一个超链接
                $resultNav[0]->sait[$value->id] = $value->name;
            }
            if($value->sid == $id) $resultNav[0]->child[] = $value;    //把属于当前导航的子类导航存进主导航的一个child属性数组中
        }
        if($resultNav[0]->sid != 0) {         //如果当前导航并非属于父类导航
            foreach($mainNav as $key=>$value) {
                if($value->id == $resultNav[0]->sid) {       //遍历主导航数组，把其中id和当前导航（子类）的sid相同的组成一个格式为 父类 > 子类 的数组
                    $child = $resultNav[0];
                    $resultNav[0] = $value;
                    $resultNav[0]->sait[$value->id] = $value->name;
                    $resultNav[0]->sait[$child->id] = $child->name;
                }
            }
            foreach($childNav as $key=>$value) {
                if($value->sid == $resultNav[0]->id) {
                    $resultNav[0]->child[] = $value;     //把所有子类导航数组进行遍历，把其中和当前导航拥有相同的sid的盗汗存进child属性数组中
                }
            }

        }
        return $resultNav;
    }
}


?>